Generally described, computing devices and communication networks can be utilized to exchange information. In a common application, a computing device can request content from another computing device via the communication network. For example, a user at a personal computing device can utilize a software browser application to request a Web page from a server computing device via the Internet. In such embodiments, the user computing device can be referred to as a client computing device and the server computing device can be referred to as a content provider.
Content providers are generally motivated to provide requested content to client computing devices often with consideration of efficient transmission of the requested content to the client computing device and/or consideration of a cost associated with the transmission of the content. For larger scale implementations, a content provider may receive content requests from a high volume of client computing devices that can place a strain on the content provider's computing resources. Additionally, the content requested by the client computing devices may have a number of components, which can further place additional strain on the content provider's computing resources.
With reference to an illustrative example, a requested Web page, or original content, may be associated with a number of additional resources, such as images or videos, which are to be displayed with the Web page. In one specific embodiment, the additional resources of the Web page are identified by a number of embedded resource identifiers, such as uniform resource locators (“URLs”). In turn, software on the client computing devices typically processes embedded resource identifiers to generate requests for the content. Often, the resource identifiers associated with the embedded resources reference a computing device associated with the content provider such that the client computing device would transmit the request for the additional resources to the referenced content provider computing device. Accordingly, in order to satisfy a content request, the content provider provides client computing devices data associated with the Web page as well as the data associated with the embedded resources.
Some content providers attempt to facilitate the delivery of requested content, such as Web pages and/or resources identified in Web pages, through the utilization of a content delivery network (“CDN”) service provider. A CDN server provider typically maintains a number of computing devices in a communication network that can cache/maintain content from various content providers. The term POP (Point-of-Presence) or edge locations are used to identify location-based clusters of computing devices in a communication network. In turn, content providers can instruct, or otherwise suggest to, client computing devices to request some, or all, of the content provider's content from the CDN service provider's computing devices. In this context, the original content provider (where the actual original data is located) becomes the “Origin” of the content.
As with content providers, CDN service providers are also generally motivated to provide requested content to client computing devices often with consideration of efficient transmission of the requested content to the client computing device and/or consideration of a cost associated with the transmission of the content. Accordingly, CDN service providers often consider factors such as latency of delivery of requested content, as well as caching-related attributes (e.g., cache-control max-age HTTP response header) of requested content in order to meet service level agreements or to generally improve the quality of delivery service. The CDN takes advantage of DNS to route the request to a specific edge location. In a typical scenario, a client/browser issues a DNS query that reaches the CDN Domain Servers. The servers analyze the source of the request and respond back with a set of IP addresses belonging to one edge location/POP. Once the client/browser receives the DNS response, it communicates with one of the IPs to request the object. Finally, once the POP web server (that has the specified IP assigned) receives the request, it issues a new request to the “Origin” webserver, if the content is not already located in the edge location/POP cache, and caches the content at the edge location/POP and serves the content back to the Client/browser. It is the DNS infrastructure of the CDN that decides what POP should be used for the request. Moreover, there are at least three latencies that are pertinent: DNS query related latency; latency between Client/browser and CDN POP; and latency between CDN POP and the origin. Reduction of latency can further be considered for a first-time request for content and subsequent requests for content. Caching solutions have been used for subsequent requests of content, but few, if any, latency schemes address first-time request latency.